home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / libs / tool6v12 / demolzh.pas < prev    next >
Pascal/Delphi Source File  |  1994-07-01  |  2KB  |  84 lines

  1. {$A+,B-,D+,E+,F-,I-,L+,N+,O-,R-,S-,V-}
  2. {$M 16384,0,655360}
  3.  
  4. Program DemoLZH;
  5.  
  6. Uses
  7.   LZH;
  8.  
  9. Var
  10.   Infile,
  11.   Outfile : File;
  12.   Option  : String[1];
  13.  
  14. Procedure ShowError(Message: String);
  15.  
  16. Begin
  17.   Writeln(Message);
  18.   Halt(1)
  19. end;
  20.  
  21.  
  22. Procedure ReadNextBlock; far;
  23.  
  24. Begin
  25.   BlockRead(Infile,Inbuf.BuffData^,InBuf.BuffSize,Inend);
  26.   If IOResult > 0 then
  27.     ShowError('Error reading input file');
  28. end;
  29.  
  30.  
  31. Procedure WriteNextBlock; far;
  32.  
  33. Var
  34.   BytesWritten: Word;
  35.  
  36. Begin
  37.   BlockWrite(Outfile,Outbuf.BuffData^,Outptr,BytesWritten);
  38.   If (IOResult > 0) or (BytesWritten < Outptr) then
  39.     ShowError('Error writing output file');
  40. end;
  41.  
  42.  
  43. Procedure OpenInput(FileName: String);
  44.  
  45. Begin
  46.   Assign(Infile,FileName);
  47.   Reset(Infile,1);
  48.   If IOResult > 0 then
  49.     ShowError('Can''t open input file');
  50. end;
  51.  
  52.  
  53. Procedure OpenOutput(FileName: String);
  54.  
  55. Begin
  56.   Assign(Outfile,FileName);
  57.   Rewrite(Outfile,1);
  58.   If IOResult > 0 then
  59.     ShowError('Can''t open output file');
  60. end;
  61.  
  62.  
  63. Begin
  64.    If ParamCount <> 3 then
  65.      ShowError('Usage: demolzh c(compression) | d(uncompression) infile outfile');
  66.    InitLZHBuffers(10240);
  67.    OpenInput(ParamStr(2));
  68.    OpenOutput(ParamStr(3));
  69.    Option := ParamStr(1);
  70.    Case UpCase(Option[1]) of
  71.      'C': Encode(ReadNextBlock,WriteNextBlock,FileSize(Infile));
  72.      'D': Decode(ReadNextBlock,WriteNextBlock);
  73.    else
  74.      ShowError('Use [D] for Decompression or [C] for Compression')
  75.    end;
  76.    Close(Infile);
  77.    If IOResult > 0 then
  78.      ShowError('Error closing input file');
  79.    Close(Outfile);
  80.    If IOResult > 0 then
  81.      ShowError('Error closing output file');
  82.    FreeLZHBuffers;
  83. end.
  84.